/**
 * Clase que representa a la persona, contiene todos los metodos necesarios
 * para crear y modificar estos objetos
 */
package cinvestav.adviseme.datamodel;

import java.sql.Date;
import java.util.LinkedList;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import cinvestav.adviseme.util.DateAdapter;

/**
 * @author javier
 *
 */
@XmlRootElement
public class Persona {
	private Integer id;
	private String nombreUsuario;
	private String password;
	private String nombrePersona;
	private String apellidoPaterno;
	private String apellidoMaterno;
	private String correo;
	private Boolean sexo;
	private Date fechaNacimiento;
	private String fotografia;
	private LinkedList<Persona> amigos;
	private Boolean selected;
	
	
	public Persona() {
		this.id = 0;
		this.nombreUsuario = "";
		this.password = "";
		this.nombrePersona = "";
		this.apellidoPaterno = "";
		this.apellidoMaterno = "";
		this.correo = "";
		this.sexo = false;
		this.fechaNacimiento = new Date(System.currentTimeMillis());
		this.fotografia = "";
		this.amigos = new LinkedList<Persona>();
		selected = false;
	}
	public Persona(Integer id, String nombreUsuario, String password,
			String nombrePersona, String apellidoPaterno,
			String apellidoMaterno, String correo, Boolean sexo,
			Date fechaNacimiento, String fotografia, LinkedList<Persona> amigos) {
		super();
		this.id = id;
		this.nombreUsuario = nombreUsuario;
		this.password = password;
		this.nombrePersona = nombrePersona;
		this.apellidoPaterno = apellidoPaterno;
		this.apellidoMaterno = apellidoMaterno;
		this.correo = correo;
		this.sexo = sexo;
		this.fechaNacimiento = fechaNacimiento;
		this.fotografia = fotografia;
		this.amigos = amigos;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getNombreUsuario() {
		return nombreUsuario;
	}
	public void setNombreUsuario(String nombreUsuario) {
		this.nombreUsuario = nombreUsuario;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getNombrePersona() {
		return nombrePersona;
	}
	public void setNombrePersona(String nombrePersona) {
		this.nombrePersona = nombrePersona;
	}
	public String getApellidoPaterno() {
		return apellidoPaterno;
	}
	public void setApellidoPaterno(String apellidoPaterno) {
		this.apellidoPaterno = apellidoPaterno;
	}
	public String getApellidoMaterno() {
		return apellidoMaterno;
	}
	public void setApellidoMaterno(String apellidoMaterno) {
		this.apellidoMaterno = apellidoMaterno;
	}
	public String getCorreo() {
		return correo;
	}
	public void setCorreo(String correo) {
		this.correo = correo;
	}
	public Boolean getSexo() {
		return sexo;
	}
	public void setSexo(Boolean sexo) {
		this.sexo = sexo;
	}
	
	@XmlJavaTypeAdapter(DateAdapter.class)
	public Date getFechaNacimiento() {
		return fechaNacimiento;
	}
	public void setFechaNacimiento(Date fechaNacimiento) {
		this.fechaNacimiento = fechaNacimiento;
	}
	public String getFotografia() {
		return fotografia;
	}
	public void setFotografia(String fotografia) {
		this.fotografia = fotografia;
	}
	public LinkedList<Persona> getAmigos() {
		return amigos;
	}
	public void setAmigos(LinkedList<Persona> amigos) {
		this.amigos = amigos;
	}
	public String getSexoStr() {
		if(sexo){
			return "Masculino";
		}
		return "Femenino";
	}
	
	public String getNombreCompleto(){
		return nombrePersona + " "+apellidoPaterno+" " +apellidoMaterno;
	}
	public Boolean getSelected() {
		return selected;
	}
	public void setSelected(Boolean selected) {
		this.selected = selected;
	}
	
	public String toString(){
		return getId() + " " + getNombreCompleto() + " " + getCorreo() + " "
				+ getFechaNacimiento() + " " + getFotografia() + " "
				+ getNombreUsuario() + " " + getSexoStr();
 	}
	
}
